package com.facedemo.db.utils;

import com.facedemo.db.PersonDao;
import com.facedemo.db.entity.Person;
import com.facedemo.utils.LogUtils;

import java.util.List;

public class PersonDaoUtils {
    /**
     * 加载所有人员
     * @return List<Person>
     * */
    public static List<Person> loadAll() {
        List<Person> list = DaoManager.getInstance().getDaoSession().getPersonDao().loadAll();
        LogUtils.printD("DAO 加载所有人员,数量："+list.size());
        return list;
    }

    /**
     *  删除人员，通过Id
     * @param person_id 人员Id
     * @param deleteFace 是否同时删除人脸
     *  */
    public static void deleteById(String person_id,boolean deleteFace) {
        if(person_id==null || person_id.length()==0) return;
        LogUtils.printD("DAO 删除人员=："+person_id);
        DaoManager.getInstance().getDaoSession().getPersonDao().deleteByKey(person_id);
        if(deleteFace) {
            PersonFeatureDaoUtils.deleteByPersonId(person_id,true);
        }
    }

    /**
     * 删除所有人
     * */
    public static void deleteAll() {
        LogUtils.printD("DAO 删除所有人员");
        DaoManager.getInstance().getDaoSession().getPersonDao().deleteAll();
    }

    /**
     *  保存人员信息，存在则更新，不存在则插入
     * @param employee
     *  */
    public static void addOrUpdate(Person employee) {
        if(employee==null) return;
        LogUtils.printD("DAO 保存人员到数据库："+employee.getPersonId()+" "+employee.getName());
        DaoManager.getInstance().getDaoSession().getPersonDao().insertOrReplace(employee);
    }

    /**
     * 查询人员通过ID
     * @param person_id
     * @return Person
     */
    public static Person queryById(String person_id) {
        if(person_id==null || person_id.length()==0) return null;
        LogUtils.printD("DAO 查询人员："+person_id);

        List<Person> results = DaoManager.getInstance().getDaoSession().getPersonDao().queryBuilder()
                .where(PersonDao.Properties.PersonId.eq(person_id))
                .list();
        if(results!=null && results.size()>0) {
            return results.get(0);
        }
        return null;
    }

    /**
     * 查询总人员数
     * */
    public static long getTotalNum() {
        long num = DaoManager.getInstance().getDaoSession().getPersonDao().count();
        LogUtils.printD("DAO 查询人员总数："+num);
        return num;
    }

}
